package controller;

import DAO.DAOFactory;
import entidade.PreTreino;
import entidade.TreinoPreTreino;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;
import org.primefaces.event.RowEditEvent;

/**
 *
 * @author Thais
 */
@ManagedBean
@ViewScoped
public class PreTreinoController implements Serializable {

    private String idPreTreino;
    private List<TreinoPreTreino> preTreinoList;
    private String tipoPreTreino;
    private PreTreinoDataModel preTreinoDM;

    public PreTreinoController() {
        preTreinoList = new ArrayList<TreinoPreTreino>();
        preTreinoDM = new PreTreinoDataModel(preTreinoList);
    }

    public String getIdPreTreino() {
        return idPreTreino;
    }

    public void setIdPreTreino(String idPreTreino) {
        this.idPreTreino = idPreTreino;
    }

    public List<TreinoPreTreino> getPreTreinoList() {
        return preTreinoList;
    }

    public void setPreTreinoList(List<TreinoPreTreino> preTreinoList) {
        this.preTreinoList = preTreinoList;
    }

    public String getTipoPreTreino() {
        return tipoPreTreino;
    }

    public void setTipoPreTreino(String tipoPreTreino) {
        this.tipoPreTreino = tipoPreTreino;
    }

    public PreTreinoDataModel getPreTreinoDM() {
        return preTreinoDM;
    }

    public void adicionarPreTreino() {
        PreTreino preTreino;
        String tipo;

        // Adiciona pre treino na lista, caso tenha sido definio qual pre treino e tipo
        if (idPreTreino != null) {
            preTreino = DAOFactory.obterPreTreinoDAO().buscarPreTreino(Long.parseLong(idPreTreino));
            TreinoPreTreino treinoPreTreino = new TreinoPreTreino();
            treinoPreTreino.setPreTreino(preTreino);

            if (tipoPreTreino != null) {
                tipo = tipoPreTreino;
                // Verificar se o pre treino ja foi adicionado e emite mensagem
                for (TreinoPreTreino tPreTreino : preTreinoList) {
                    if (tPreTreino.getPreTreino().getIdPreTreino().equals(Long.parseLong(idPreTreino))) {
                        if (tPreTreino.getTipoPreTreino() == tipo) {
                            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage("Pré Treino já adicionado!"));
                            return;
                        }
                    }
                }
                treinoPreTreino.setTipoPreTreino(tipo);
                preTreinoList.add(treinoPreTreino);

                if (preTreinoList.size() > 1) {
                    preTreinoDM.setWrappedData(preTreinoList);
                } else {
                    preTreinoDM = new PreTreinoDataModel(preTreinoList);
                }
            }
        }
    }

    public void onEdit(RowEditEvent event) {
        FacesMessage msg = new FacesMessage("Pré Treino Editado", ((PreTreino) event.getObject()).getNome());
        FacesContext.getCurrentInstance().addMessage(null, msg);
    }

    public void onCancel(RowEditEvent event) {
        FacesMessage msg = new FacesMessage("Pré Treino Cancelado", ((PreTreino) event.getObject()).getNome());
        FacesContext.getCurrentInstance().addMessage(null, msg);
    }
}
